﻿using Database.Context;
using QuanLyThongTinCoSo.BaseForm;
using QuanLyThongTinCoSo.Biz;
using QuanLyThongTinCoSo.Common;
using QuanLyThongTinCoSo.Forms.NhomPhuongTien;
using Model = Database.Models;

namespace QuanLyThongTinCoSo.Forms.PhanLoaiChiTietPhuongTien
{
    public partial class frmPhanLoaiChiTietPhuongTienCoSoDetail : frmDetail
    {
        #region Contructor
        public frmPhanLoaiChiTietPhuongTienCoSoDetail()
        {
            InitializeComponent();
            Text = @"Thêm mới Phân loại chi tiết phương tiện";

            //Load data
            LoadDataLoaiPhuongTien();

            txtTen.Focus();
        }

        public frmPhanLoaiChiTietPhuongTienCoSoDetail(int id)
        {
            InitializeComponent();

            LoadDataLoaiPhuongTien();

            var context = new Context();
            var phanLoaiChiTietPhuongTienPCCCCoSoBiz = new PhanLoaiChiTietPhuongTienPCCCCoSoBiz(context);

            Text = @"Sửa Phân loại chi tiết phương tiện";

            txtTen.Focus();

            _fromtype = Constant.TypeForm.Edit;
            _id = id;

            var model = phanLoaiChiTietPhuongTienPCCCCoSoBiz.GetItemById(id) as Model.PhanLoaiChiTietPhuongTienPCCCCoSo;
            if (model == null) return;

            txtTen.Text = model.Ten;
        }
        #endregion
        

        #region Validation

        protected override bool Validation()
        {
            var flag = true;

            errorProvider.Dispose();

            if (string.IsNullOrEmpty(txtTen.Text))
            {
                errorProvider.SetError(txtTen, "Bạn chưa nhập Phân loại chi tiết phương tiện. Xin vui lòng kiểm tra lại");
                flag = false;
            }

            return flag;
        }

        #endregion

        #region Insert

        protected override void Insert()
        {
            var context = new Context();
            var nhomPhuongTienPCCCCoSoBiz = new NhomPhuongTienPCCCCoSoBiz(context);
            var phanLoaiChiTietPhuongTienPCCCCoSoBiz = new PhanLoaiChiTietPhuongTienPCCCCoSoBiz(context);

            var model = new Model.PhanLoaiChiTietPhuongTienPCCCCoSo
                            {
                                Ten = txtTen.Text,
                                NhomPhuongTienCoSoes = 
                                    nhomPhuongTienPCCCCoSoBiz.GetItemById(
                                        int.Parse(cbLoaiPhuongTien.SelectedValue.ToString())) as
                                    Model.NhomPhuongTienPCCCCoSo,
                            };
            phanLoaiChiTietPhuongTienPCCCCoSoBiz.Insert(model);
        }

        #endregion

        protected override void Edit()
        {
            var context = new Context();
            var nhomPhuongTienPCCCCoSoBiz = new NhomPhuongTienPCCCCoSoBiz(context);
            var phanLoaiChiTietPhuongTienPCCCCoSoBiz = new PhongBiz(context);

            var item = phanLoaiChiTietPhuongTienPCCCCoSoBiz.GetItemById(_id) as Model.PhanLoaiChiTietPhuongTienPCCCCoSo;
            if (item != null)
            {
                item.Ten = txtTen.Text;
                item.NhomPhuongTienCoSoes =
                    nhomPhuongTienPCCCCoSoBiz.GetItemById(
                        int.Parse(cbLoaiPhuongTien.SelectedValue.ToString())) as
                    Model.NhomPhuongTienPCCCCoSo;
                phanLoaiChiTietPhuongTienPCCCCoSoBiz.Update(item);
            }
        }

        private void LoadDataLoaiPhuongTien()
        {
            var context = new Context();
            var nhomPhuongTienPCCCCoSoBiz = new NhomPhuongTienPCCCCoSoBiz(context);

            cbLoaiPhuongTien.DataSource = nhomPhuongTienPCCCCoSoBiz.GetAll();
            cbLoaiPhuongTien.DisplayMember = "Ten";
            cbLoaiPhuongTien.ValueMember = "Id";
        }

        private void btnLoaiPhuongTien_Click(object sender, System.EventArgs e)
        {
            var frm = new frmNhomPhuongTienCoSoDetail();
            frm.OnLoadData += LoadDataLoaiPhuongTien;
            frm.ShowDialog();
        }
    }
}